#ifndef MAIN_PAGE_H
#define MAIN_PAGE_H

#include"weatherdata.h"

#include <QWidget>
#include <QMenu>
#include <QMap>

//提供的网络访问功能
#include <QNetworkAccessManager>//能够发送 HTTP 请求并接收响应，用于执行各种网络操作
#include <QNetworkReply>//提供了访问响应数据、处理错误等功能  网络响应
#include <qlabel.h>


QT_BEGIN_NAMESPACE
namespace Ui { class main_page; }
QT_END_NAMESPACE

class main_page : public QWidget
{
    Q_OBJECT

public:
    main_page(QWidget *parent = nullptr);
    ~main_page();

private:
    Ui::main_page *ui;

signals:
    void backToMainPage();


protected:
    void  contextMenuEvent(QContextMenuEvent* event);
    //重写父类鼠标事件
    void  mousePressEvent(QMouseEvent* event);
    void  mouseMoveEvent(QMouseEvent* event);

    //获取天气数据
    void  getWeatherInfo(QString cityCode);

    void parseJson(QByteArray& byteArray);

    void  updateUI();

    //重写父类的eventfilter方法
    bool eventFilter(QObject* watched, QEvent* event);

    //绘制高低温曲线
    void  paintHighCurve();
    void  paintLowCurve();

protected://只能从 类的内部 或者 派生类 中访问
    virtual void keyReleaseEvent(QKeyEvent *event);
    //类的保护部分，虚拟函数keyReleaseEvent，处理按键释放事件


private slots:
    void on_btnSearch_clicked();

    void on_pBtn_back_clicked();

private:
      void  onReplied(QNetworkReply* reply);

private:
   QMenu* mExitMenu;//右键退出菜单
   QAction* mExitAct;//退出行为 - 菜单项
   QPoint mOffset;//窗口移动时，鼠标与窗口左上角的偏移

   //Http请求
   QNetworkAccessManager* mNetAccessManager;
   QMap<QString, QString> mTypeMap;

   //添加列表
   //今天和6天的天气
   Today mToday;
   Day mDay[6];




   //星期和日期
   QList<QLabel*> mWeekList;
   QList<QLabel*> mDateList;

   //天气和天气图标
   QList<QLabel*> mTypeList;
   QList<QLabel*> mTypeIconList;

   //天气污染指数
   QList<QLabel*> mAqiList;

   //风力和风向
   QList<QLabel*> mFxList;
   QList<QLabel*> mFlList;


};
#endif // MAIN_PAGE_H
